

export default {

	/**
	 * 微信请求code
	 * @param {Object} callback
	 */
	getWxMaCode(callback){
		uni.login({
			provider: 'weixin',
			success: (loginRes) => {
				callback(loginRes.code)
			},
			fail: (res) => {
				console.log(res)
			}
		});
	},

	/**
	 * 小程序请求统一下单接口获取js支付参数
	 * @param {Object} params
	 * @param {Object} callback
	 */
	wxPayUnifiedOrder(params, callback){
		uni.$xl.apis.wxPayUnifiedOrder({
			params: params,
			needToken: true
		}).then(res =>{
			console.log(res)
			// 获取js支付参数之后，再执行支付功能的回调函数
			if(callback){
				callback(res.data);
			}
		}).catch(err =>{
			console.log(err)
			uni.showToast({ title: err, icon: 'none' });
		});
	},

	/**
	 * 请求微信支付的对外接口
	 * @param {Object} params	第一个参数是请求统一下单接口获取js支付参数的参数
	 * @param {Object} callback		第二个参数是支付成功后的回调函数
	 */
	wxPay(params, callback, errCallback){
		uni.$xl.apis.wxPayUnifiedOrder({
			params: params,
			needToken: true
		}).then(res =>{
			let payInfo = res.data
			// #ifdef MP-WEIXIN
			uni.requestPayment({
				nonceStr: payInfo.nonceStr,　　　　　	//　　随机字符串　　　　【字符串】
				package: payInfo.package,　　　	//　　统一下单接口 必须加前缀：prepay_id=xxxxxxxx  【字符串】
				paySign: payInfo.paySign,　　　　　　　//　　签名     【字符串】
				signType: payInfo.signType,　　　　　　//　　签名算法  【字符串】
				timeStamp: payInfo.timeStamp,　　　　 //　　时间戳   【字符串】
				success() {
					callback(res);
				},
				fail(err) {
					console.log('支付失败提示 fail:' + JSON.stringify(err));
					if(errCallback){
						if(err.errMsg === "requestPayment:fail cancel") errCallback({ type: 'pay', error: '取消支付' })
						else  errCallback({ type: 'pay', error: '支付失败' })
					} else {
						if(err.errMsg === "requestPayment:fail cancel"){
							uni.showToast({ title: '取消支付', icon: 'none' });
						}else{
							uni.showToast({ title: '支付失败', icon: 'none' });
						}
					}
				},
				complete(res){
					//console.log('xxxxxxxxxxxxxxxxxx---complete')
				}
			});
			// #endif

			// #ifdef APP
			uni.requestPayment({
				"provider": "wxpay",
				"orderInfo": {
					"appid": payInfo.appId,				// 微信开放平台 - 应用 - AppId，注意和微信小程序、公众号 AppId 可能不一致
					"noncestr": payInfo.nonceStr, 		// 随机字符串
					"package": payInfo.packageValue,    // 固定值
					"partnerid":  payInfo.partnerId,    // 微信支付商户号
					"prepayid": payInfo.prepayId, 		// 统一下单订单号
					"timestamp": payInfo.timeStamp,     // 时间戳（单位：秒）
					"sign": payInfo.sign 				// 签名，这里用的 MD5/RSA 签名
				},
				success(res) {
					callback("支付成功");
				},
				fail(e) {
					if(errCallback){
						if(err.errMsg === "requestPayment:fail cancel") errCallback({ type: 'pay', error: '取消支付' })
						else  errCallback({ type: 'pay', error: '支付失败' })
					} else {
						if(err.errMsg === "requestPayment:fail cancel"){
							uni.showToast({ title: '取消支付', icon: 'none' });
						}else{
							uni.showToast({ title: '支付失败', icon: 'none' });
						}
					}
				}
			})
			// #endif
		}).catch(err =>{
			console.log(err)
			if(errCallback) {
				errCallback({ type: 'request', error: err })
			} else {
				uni.showToast({ title: err, icon: 'none' });
			}
		});
	}

}